package mesure.controller;
import java.util.*;

import mesure.model.Conversion;
import mesure.model.Quantite;
import mesure.model.Unite;


public class controler_mesure {
	
	private ArrayList<Unite> mesunites = new ArrayList<Unite>();

	private ArrayList<Quantite> mesquantites = new ArrayList<Quantite>();
	
	private ArrayList<Conversion> mesconversions = new ArrayList<Conversion>();

	public controler_mesure() {
	
	}

	public ArrayList<Unite> getMesunites() {
		return mesunites;
	}

	public void setMesunites(ArrayList<Unite> mesunites) {
		this.mesunites = mesunites;
	}

	public ArrayList<Quantite> getMesquantites() {
		return mesquantites;
	}

	public void setMesquantites(ArrayList<Quantite> mesquantites) {
		this.mesquantites = mesquantites;
	}

	public ArrayList<Conversion> getMesconversions() {
		return mesconversions;
	}

	public void setMesconversions(ArrayList<Conversion> mesconversions) {
		this.mesconversions = mesconversions;
	}
	
	/* cette methode permet de dire si une unité existe déja ou pas*/
	public Unite rechercherunite(String libelle, String symbole) {/* recherche d'une unité*/

		Unite t = null;
		for (Unite T : this.mesunites) {

			if ((T.getLibelle() == libelle)
					&& (T.getSymbole() == symbole)) {/*on nne compare que les libelle et les symboles*/
				t = T;
			}
		}

		return (t);
	}
	
	/* cette methode permet de creer une nouvelle unité*/
	public void ajouterUnite( String libelle, String symbole){
		Unite temporaire=null;
		temporaire = this.rechercherunite(libelle, symbole);
		if(temporaire == null){
			temporaire = new Unite(libelle,symbole);
			this.mesunites.add(temporaire);
		}else{
			System.out.println("l'unité existe déjà");
		}
	}
	
	/* cette methode permet de supprimer une unite existante*/
	public void supprimerUnite(String libelle, String symbole){
		Unite temporaire = null;
		temporaire = this.rechercherunite(libelle, symbole);
		if(temporaire != null){
			this.mesunites.remove(temporaire);
			System.out.println("l'unité a bien été supprimée");

		}else{
			System.out.println("l'unité n'existe pas");
		}
	}
	
	/* cette methode permet de renvoyer si une quantité existe déja ou pas*/
	public Quantite rechercherquantite(int valeur) { /*recherche quantité */

		Quantite t = null;
		for (Quantite T : this.mesquantites) {

			if (T.getValeur() == valeur) {
				t = T;
			}
		}

		return (t);
	}
	
	/* cette methode permet d' ajouter une quantité à la liste des quantités*/
	public void ajouterQuantite(int valeur){
		Quantite q = this.rechercherquantite(valeur);
		if(q == null){
			q = new Quantite(valeur);
			this.mesquantites.add(q);
			System.out.println("votre quantité a bien été créé");
		}else{
			System.out.println("votre quantité existe déja");
		}
	}
	
	/* cette methode permet de suprimer une quantité de la liste des quantités*/
	public void supprimerQuantite(int valeur){
		
		Quantite q = this.rechercherquantite(valeur);
		if(q != null){
			this.mesquantites.remove(q);
			System.out.println("votre quantité a bien été supprimée");
		}else{
			System.out.println("votre quantité n'existe pas");
		}
	}
	
	/*cette methode modifie une quantité si elle existe deja et la crée sinon*/
	public void modifierQuantite(int valeur1, int valeur2){ /*valeur1:valeur avant  et valeur2 c'est la valeur apres*/
		Quantite q = this.rechercherquantite(valeur1);
		if(q == null){
			q = new Quantite(valeur2); /*creation de la valeur 2*/
			this.mesquantites.add(q);
			System.out.println("votre quantité a bien été créé");
		}else{
			q.setValeur(valeur2);
			System.out.println("votre quantité existe déja");
		}
	}
	
	/* cette methode permet de rechercher une conversion dans la liste des conversions existantes*/
	public Conversion rechercherconversion(String unite_base, int valeur) { /* cherchez valeur */

		Conversion t = null;
		for (Conversion T : this.mesconversions) {

			if ((T.getUnite_base() == unite_base)
					&& (T.getValeur() == valeur)) {
				t = T;
			}
		}

		return (t);
	}
	
	/* cette methode permet d'ajouter une nouvelle conversion à la liste des conversions*/
	public void ajouterConversion(String unite_base, int valeur){
		
		Conversion t = null;
		t = this.rechercherconversion(unite_base, valeur);
		if(t == null){
			t = new Conversion(unite_base, valeur);
			this.mesconversions.add(t);
		}else {
			System.out.println("la conversion existe déja");
		}
		
	}
	
	/* cette methode permet de supprimer une conversion de la liste des conversion*/
	public void supprimerConversion(String unite_base, int valeur){
		
		Conversion t =null;
		t = this.rechercherconversion(unite_base, valeur);
		if(t != null){
			this.mesconversions.remove(t);
		}else {
			System.out.println("la conversion n'existe pas");
		}
		
	}
	
	
	/* cette methode permet de convertir une unité en une autre unité*/
	
	
	

}
